<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>

<HEAD>


<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="hevea 1.08">
<LINK rel="stylesheet" type="text/css" href="tutorial.css">
</HEAD>

<BODY >
<!--HEVEA command line is: hevea -fix underscore.hva hyperref.hva url.hva tutorial -->
<!--HACHA command line is: hacha -tocbis tutorial.html -->




<DIV CLASS="center"><FONT SIZE=4>TECHNICAL REPORT IC-PARC-03-2</FONT></DIV>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>

<DIV CLASS="center">
<FONT SIZE=6>Developing Applications with ECLiPSe
<BR>
<BR><BR>
<FONT SIZE=4>H. Simonis<BR>
email: Helmut.Simonis@crosscoreop.com<BR>
</FONT></FONT></DIV>



<BLOCKQUOTE CLASS="quote"><B>Abstract: </B>
In this tutorial we provide a methodology for developing large scale 
applications with the ECLiPSe system. This methodology follows a top-down 
approach from the original problem specification to detailed implementation 
aspects of the resulting code. We concentrate on general design and 
programming aspects, and largely ignore specific problem solving 
techniques, which can be found in other tutorials. This current report 
is intended for programmers developing applications with ECLiPSe 
as well as those tasked with the maintenance of such programs.<BR>
<BR>
This tutorial is based on an earlier version restricted to internal Parc Technologies use, and contains numerous corrections and improvements suggested by the ECLiPSe team. 
</BLOCKQUOTE>

<UL>
<LI><A HREF="tutorial001.html">Contents</A>
<LI><A HREF="tutorial002.html">Introduction</A>
<UL>
<LI><A HREF="tutorial002.html#toc1">Intended audience</A>
<LI><A HREF="tutorial002.html#toc2">Related work</A>
<LI><A HREF="tutorial002.html#toc3">Structure of tutorial</A>
</UL>
<LI><A HREF="tutorial003.html">High Level Design</A>
<UL>
<LI><A HREF="tutorial003.html#toc4">Application structure</A>
<LI><A HREF="tutorial003.html#toc5">Queries</A>
<LI><A HREF="tutorial003.html#toc6">API</A>
<LI><A HREF="tutorial003.html#toc7">High level structure</A>
<LI><A HREF="tutorial003.html#toc8">Modules</A>
<LI><A HREF="tutorial003.html#toc9">Naming schemes</A>
<LI><A HREF="tutorial003.html#toc10">Documentation</A>
</UL>
<LI><A HREF="tutorial004.html">Data Structures</A>
<UL>
<LI><A HREF="tutorial004.html#toc11">External data representation</A>
<LI><A HREF="tutorial004.html#toc12">Internal data representation</A>
</UL>
<LI><A HREF="tutorial005.html">Getting it to Work</A>
<UL>
<LI><A HREF="tutorial005.html#toc13">Stubs</A>
<LI><A HREF="tutorial005.html#toc14">Argument checking</A>
<LI><A HREF="tutorial005.html#toc15">Early testing</A>
<LI><A HREF="tutorial005.html#toc16">Line Coverage</A>
<LI><A HREF="tutorial005.html#toc17">Heeding warnings</A>
<LI><A HREF="tutorial005.html#toc18">Keep it working</A>
</UL>
<LI><A HREF="tutorial006.html">Programming Concepts</A>
<UL>
<LI><A HREF="tutorial006.html#toc19">Overview</A>
<LI><A HREF="tutorial006.html#toc20">Alternatives</A>
<LI><A HREF="tutorial006.html#toc21">Iteration on lists</A>
<LI><A HREF="tutorial006.html#toc22">Iteration on terms</A>
<LI><A HREF="tutorial006.html#toc23">Iteration on array</A>
<LI><A HREF="tutorial006.html#toc24">Transformation</A>
<LI><A HREF="tutorial006.html#toc25">Filter</A>
<LI><A HREF="tutorial006.html#toc26">Combine</A>
<LI><A HREF="tutorial006.html#toc27">Minimum</A>
<LI><A HREF="tutorial006.html#toc28">Best and rest</A>
<LI><A HREF="tutorial006.html#toc29">Sum</A>
<LI><A HREF="tutorial006.html#toc30">Merge</A>
<LI><A HREF="tutorial006.html#toc31">Group</A>
<LI><A HREF="tutorial006.html#toc32">Lookup</A>
<LI><A HREF="tutorial006.html#toc33">Fill matrix</A>
<LI><A HREF="tutorial006.html#toc34">Cartesian</A>
<LI><A HREF="tutorial006.html#toc35">Ordered pairs</A>
</UL>
<LI><A HREF="tutorial007.html">Input/Output</A>
<UL>
<LI><A HREF="tutorial007.html#toc36">Reading input data into data structures</A>
<LI><A HREF="tutorial007.html#toc37">How to use DCGs</A>
<LI><A HREF="tutorial007.html#toc38">Creating output data files</A>
<LI><A HREF="tutorial007.html#toc39">Good and bad data formats</A>
<LI><A HREF="tutorial007.html#toc40">Report generation</A>
</UL>
<LI><A HREF="tutorial008.html">If it doesn't Work</A>
<UL>
<LI><A HREF="tutorial008.html#toc41">Understanding failure</A>
<LI><A HREF="tutorial008.html#toc42">Checking program points</A>
<LI><A HREF="tutorial008.html#toc43">Debugger</A>
</UL>
<LI><A HREF="tutorial009.html">Correctness and Performance</A>
<UL>
<LI><A HREF="tutorial009.html#toc44">Testing</A>
<LI><A HREF="tutorial009.html#toc45">Profiling</A>
<LI><A HREF="tutorial009.html#toc46">Reviewing</A>
<LI><A HREF="tutorial009.html#toc47">Issues to check for</A>
</UL>
<LI><A HREF="tutorial010.html">Style Guide</A>
<UL>
<LI><A HREF="tutorial010.html#toc48">Style rules</A>
<LI><A HREF="tutorial010.html#toc49">Module structure</A>
<LI><A HREF="tutorial010.html#toc50">Predicate definition</A>
</UL>
<LI><A HREF="tutorial011.html">Layout Rules</A>
<UL>
<LI><A HREF="tutorial011.html#toc51">General guidelines</A>
<LI><A HREF="tutorial011.html#toc52">Predicates and clauses</A>
<LI><A HREF="tutorial011.html#toc53">If-then-elses</A>
<LI><A HREF="tutorial011.html#toc54">Disjunctions</A>
<LI><A HREF="tutorial011.html#toc55">Do loops</A>
<LI><A HREF="tutorial011.html#toc56">Comments</A>
</UL>
<LI><A HREF="tutorial012.html">Core Predicates</A>
<UL>
<LI><A HREF="tutorial012.html#toc57">Modules</A>
<LI><A HREF="tutorial012.html#toc58">Predicate definition</A>
<LI><A HREF="tutorial012.html#toc59">Control</A>
<LI><A HREF="tutorial012.html#toc60">I/O</A>
<LI><A HREF="tutorial012.html#toc61">Arrays</A>
<LI><A HREF="tutorial012.html#toc62">Hash Tables</A>
<LI><A HREF="tutorial012.html#toc63">Arithmetic</A>
<LI><A HREF="tutorial012.html#toc64">Terms and structures</A>
<LI><A HREF="tutorial012.html#toc65">List Handling</A>
</UL>
<LI><A HREF="tutorial013.html">Index</A>
</UL>
<!--FOOTER-->
<HR SIZE=2><BLOCKQUOTE CLASS="quote"><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
</EM><A HREF="http://pauillac.inria.fr/~maranget/hevea/index.html"><EM>H<FONT SIZE=2><sup>E</sup></FONT>V<FONT SIZE=2><sup>E</sup></FONT>A</EM></A><EM>.</EM></BLOCKQUOTE></BODY>
</HTML>
